package com.bicon.botu.mall.order.mapper;


import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import com.bicon.botu.mall.order.dto.*;
import com.bicon.botu.mall.order.entity.AfterSalesRecords;
import com.bicon.botu.mall.order.processor.dto.RefundRecord;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
  * 订单退款退货记录 Mapper 接口
 * </p>
 *
 * @author 李双喜
 * @since 2018-06-14
 */
public interface AfterSalesRecordsMapper extends BaseMapper<AfterSalesRecords> {

    /**
     * 跟据条件查询售后申请数据
     * @param page
     * @param params
     * @return
     */
    List<AfterSalesItemDto> getAfterSalesPageByCondition(Pagination page, @Param("params") Map<String, String> params);

    /**
     * 统计各状态的售后申请数量
     * @param storeId
     * @return
     */
    List<AfterSalesStatistics> statisticAfterSale(@Param("storeId") String storeId);

    /**
     * PC端查询售后申请明细
     * @param afterSalesId
     * @return
     */
    AfterSalesForWebDto queryAfterSalesRecordsForWeb(@Param("afterSalesId") String afterSalesId);

    /**
     * 查询退货申请商品列表
     * @param afterSalesId
     * @return
     */
    List<AfterSalesDetailsDto> queryAfterSalesGoodsList(Pagination page, @Param("afterSalesId") String afterSalesId);

    /**
     * 跟据ID更新状态
     * @param afterSalesId
     */
    void receivedGoods(@Param("id") String afterSalesId);

    /**
     * 查询导出记录的数据
     * @param params
     * @return
     */
    List<AfterSalesExportDto> getAfterSalesExportList(@Param("params") Map<String, String> params);

    /**
     * 跟据订单号查询售后记录
     * @param orderGoodsId
     * @param type
     * @return
     */
    List<OrderGoodsAfterSalesDto> queryGoodsAfterSalesByOrderId(@Param("orderGoodsId") String orderGoodsId,@Param("type") Integer type);


    /**
     * 跟据订单ID统计处理中的售后记录
     * @param orderIdList
     * @return
     */
    List<OrderGoodsAfterSaleStatisticsDto> queryProcessingAfterSalesByOrderIds(@Param("orderIdList") List<String> orderIdList);

    /**
     * 查询待退款的记录
     * @return
     */
    List<RefundRecord> queryRefundRecords();

    /**
     * 查询订单未申请退款成功的明细数量
     * @param orderGoodsId
     * @return
     */
    Long countUnAfterSalesDetail(@Param("orderGoodsId") String orderGoodsId);

    /**
     * 统计Web端 系统提醒 的数量
     * @param storeId
     * @return
     */
    List<TotalPriceDTO> statisticWarnTotal(@Param("storeId") String storeId);
}